sequenceDiagram
    participant WX as 微信支付服务器
    participant V as WxPayNotifyApiView
    participant C as WxPayClient
    participant P as PaymentRecord模型
    participant O as Order模型
    participant L as Logger

    WX->>V: POST支付结果通知
    V->>V: 解析请求体数据
    V->>V: 检查resource是否为空
    alt resource为空
        V->>L: 记录错误日志
        V-->>WX: 返回FAIL:Bad Request
    else resource不为空
        V->>C: 验证回调签名
        C-->>V: 返回验签结果
        alt 验签失败
            V->>L: 记录验签失败日志
            V-->>WX: 返回FAIL:Signature Verify Fail
        else 验签成功
            V->>C: 解密通知数据
            C-->>V: 返回解密结果
            alt 解密失败
                V->>L: 记录解密失败日志
                V-->>WX: 返回FAIL:Decrypt Fail
            else 解密成功
                V->>V: 提取支付信息
                V->>V: 检查支付状态
                alt 非成功状态
                    V->>L: 记录非成功回调日志
                    V-->>WX: 返回SUCCESS
                else 支付成功
                    V->>P: 根据商户订单号查找支付记录
                    alt 未找到支付记录
                        V->>L: 记录未找到记录日志
                        V-->>WX: 返回FAIL:Payment Record Not Found
                    else 找到支付记录
                        V->>V: 检查是否已处理
                        alt 已处理
                            V->>L: 记录重复回调日志
                            V-->>WX: 返回SUCCESS
                        else 未处理
                            V->>V: 校验支付金额
                            alt 金额不匹配
                                V->>L: 记录金额不匹配日志
                                V-->>WX: 返回FAIL:Amount Mismatch
                            else 金额匹配
                                V->>P: 更新支付记录状态
                                P-->>V: 保存成功
                                V->>O: 更新订单状态
                                O-->>V: 保存成功
                                V-->>WX: 返回SUCCESS
                            end
                        end
                    end
                end
            end
        end
    end
